#ifndef LIST_H
#define LIST_H

typedef struct _list list;
typedef struct _node node;

struct _list {
  node * first;
  node * last;
};

struct _node {
  void * data;
  node * next;
};

list * list_new(void);
int list_isempty(list *);
node * list_find(list *,void *);
list * list_add(list *,void *);
list * list_remove(list *,void *);
void list_free(list *);
void list_print(list *);

#endif
